home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 014a / viz420.zip / VIZ.DOC < prev    next >
Text File  |  1991-11-13  |  65KB  |  1,327 lines

  1.      ┌─────────────────────────────────────────────────────────────┐
  2.      │ Trademarked names are the property of the respective owners │
  3.      └─────────────────────────────────────────────────────────────┘
  4.                       VIz
  5.  
  6.          Copyright (c) 1989, 1990, 1991 FM de Monasterio
  7.              Licensed Material - All rights reserved
  8.  
  9.                   Release 4.20
  10.  
  11.    SUMMARY
  12.  
  13.    VIz is a small resident program that accelerates BIOS (and DOS) video input
  14.    and output in text mode; it can be used with IBM-compatible MDA, EGA or VGA
  15.    adapter cards and Hercules HGC and HGC+ cards.  In its present version, VIz
  16.    produces video interference ("snow") in old CGA cards; for such systems you
  17.    can use VIz-CGA, a snow-free, 8088-CPU oriented version.
  18.  
  19.    In addition, VIz includes an independent, resident component for displaying
  20.    a block cursor, either continuously or alternating with a line cursor at an
  21.    adjustable rate of alternation.  The latter display is well suited for easy
  22.    localization of the cursor in some laptop screens.
  23.  
  24.    Finally, VIz also contains an independent, resident ANSI-filter driver that
  25.    mediates a subset of the ANSI escape sequences to control the console. This
  26.    filter can be used, instead of ANSI.SYS, to implement ANSI escape sequences
  27.    to control video display, with the advantage that can be turned off and on,
  28.    and removed from memory without rebooting.
  29.  
  30.    All 3 resident modules occupy a total of less than about 1800 bytes of RAM.
  31.    Depending on the system configuration and BIOS version, video accelerations
  32.    by a factor of between 2 and 10 have been obtained.
  33.  
  34.  
  35.    REGISTRATION
  36.  
  37.    This software is user-supported; the present release, although lacking the
  38.    options marked by asterisks, is a fully usable program.  You may test this
  39.    release for (in)compatibilities with your system, but after the testing is
  40.    completed you are requested to order a registered copy of the full release
  41.    of the software from the address at the end of this documentation.
  42.  
  43.    If you would rather use this unregistered copy, consider making a donation
  44.    to the Children's Hospital of Washington DC, for indigent children in need
  45.    of medical care.  Every year in the USA, infant mortality claims the lives
  46.    of tens of thousands of children before their first year of life, and most
  47.    of them come from families below poverty level...  Please send to the same
  48.    address a check payable to the "PATIENT CARE FUND, CHILDREN'S HOSPITAL" on
  49.    the obverse, and marked "For Deposit Only" on the reverse.  Donations will
  50.    be sent to Children's Hospital.  Please identify the program for which you
  51.    are making the donation.
  52.  
  53.    --------------------------------------------------------------------------
  54.        VIZ.REG contains a form needed to register or upgrade the Software
  55.    --------------------------------------------------------------------------
  56.  
  57.    See the final part of this documentation for information on the Licensing,
  58.    Distribution, Warranty, and Limitation of Remedies of this software.
  59.  
  60.                 -----------------
  61.  
  62.    GENERAL INFORMATION
  63.  
  64.    There are 3 basic ways of producing character-oriented, text video displays
  65.    in DOS computers: (1) using direct video memory mapping, which is extremely
  66.    fast but dependent on the video hardware and has a limited portability; (2)
  67.    via BIOS services, provided by the first "hidden" DOS boot file and usually
  68.    augmented by the video adapter, which are not as fast as direct mapping but
  69.    more portable; and (3) via DOS services, provided by the other "hidden" DOS
  70.    boot file and sometimes augmented via installable device drivers, which are
  71.    much slower than the other two approaches, but have greater portability and
  72.    permit additional operations such as redirection.
  73.  
  74.    Many of the DOS and BIOS video services can be accelerated using a resident
  75.    program that intercepts the calls made to such services, and implements the
  76.    video operation with faster instructions.  Because of the nature of DOS and
  77.    of BIOS services, the interception must occur at the input site of the BIOS
  78.    services (interrupt 10h), whereas it can occur at the input site (interrupt
  79.    21h) or output site (interrupt 29h), or both, of the DOS services.
  80.  
  81.    VIz is a utility that accelerates many of the basic text-video services and
  82.    allows changing the video mode, page and font of the display as well as the
  83.    raw or normal mode of DOS video output.  When used in a VGA/EGA system, VIz
  84.    also permits control of the red, green and blue mixture that determines the
  85.    color of each of the 16 registers of the color palette, and the RGB mixture
  86.    can be modified to suit user preferences.  VIz also permits controlling the
  87.    frequency (pitch) of the bell's tone.
  88.  
  89.    VIz releases require MS-DOS or PC-IBM DOS version 2 or later. (Upper-memory
  90.    selfloading requires DOS version 3 or higher.)  A cyclical redundancy check
  91.    (CRC) calculation is performed each time VIz is executed; if the CRC fails,
  92.    indicating corruption of the code, the program aborts to DOS.
  93.  
  94.  
  95.    HARDWARE COMMANDS
  96.  
  97.    Cursor position is updated via direct hardware commands.  Starting with VIz
  98.    release 3.00, such commands can be sent out as WORD (double-byte) values or
  99.    as two successive BYTE values. The WORD-out method of addressing, also used
  100.    by other programs (e.g. Microsoft Windows), yields faster accelerations but
  101.    it may not work with some older clone systems.
  102.  
  103.    To test which method of addressing you can use, enter the command 'VIZ /?H'
  104.    to see if the cursor appears at the indicated position. If it does so, your
  105.    system can handle WORD-out commands.
  106.  
  107.  
  108.    CPU VERSIONS
  109.  
  110.    VIz is entirely written in assembly language.  Each VIz version consists of
  111.    4 processor-type releases (086, 268, 386, and 486), where the code has been
  112.    optimized for the specific type of 80x86 processor.  This is needed because
  113.    the processors currently available differ markedly in instruction execution
  114.    times, and the availability of memory caches affects those times further by
  115.    influencing both speed of instruction fetching and memory access.  The type
  116.    and degree of code optimization vary with the processor model.
  117.  
  118.    In addition to standard (086) assembly language instructions, the 286, 386,
  119.    and 486 releases of VIz also use 286-, 386- or 486-specific instructions in
  120.    real mode only (which is the native mode for 086 processors). Such releases
  121.    differ slightly in resident size.
  122.  
  123.    Average accelerations and comparisons with other accelerators based on four
  124.    benchmarks are described in the accompanying file VIZ.DAT for 086, 286, 386
  125.    and 486 VIz versions.
  126.  
  127.                 ----------------
  128.  
  129.    1.  VIDEO ACCELERATION MODULE
  130.  
  131.    VIz installs itself as a resident program that can be invoked repeatedly for
  132.    modification of its parameters, without producing multiple copies on memory;
  133.    the accelerator module of the resident uses less than 1,000 bytes of RAM. To
  134.    maximize speed of code, but minimize resident size, acceleration only occurs
  135.    for video page 0 in a text mode (1-3, color; 7, monochrome). In other pages,
  136.    or graphic modes, VIz becomes inactive and is automatically reactivated by a
  137.    change that resets the video to page 0 in a text mode.  Viz accelerates BIOS
  138.    video functions, and it can also accelerate DOS-mediated screen output.
  139.  
  140.    The acceleration of VIz can be turned off either by deallocating the program
  141.    with the switch /U (if no other resident has been installed after VIz) or by
  142.    making it quiescent with switch /Q (i.e. it remains resident but not active)
  143.    until reactivation (any switch but /QU) or deallocation by a further call to
  144.    VIz.
  145.  
  146.    The relative acceleration depends on several factors, including BIOS version
  147.    and date, 80x86 CPU model and clock speed, and whether or not ROM video BIOS
  148.    is shadowed or remapped to faster RAM. Another factor, often disregarded, is
  149.    the use of other residents also intercepting the interrupt 10h. In addition,
  150.    some memory managers, even when RAM-shadowing video BIOS, have been found to
  151.    produce a not insignificant degradation of the video speed.  Whereas smaller
  152.    acceleration factors are to be expected in machines performing a faster BIOS
  153.    operation (i.e. tighter ROM code, faster CPU, shadowed or remapped ROM), the
  154.    relative weight of individual factors may yield unexpected results.  Another
  155.    factor affecting acceleration is the area of upper conventional memory (UMB)
  156.    in which VIz is loaded when switch /H is selected.  This is free memory made
  157.    available through an extended memory specification (XMS) manager (see below)
  158.    that reclaims unused memory above 640 kb but below 1 Mb, i.e., memory filled
  159.    in above the video adapters.  Contingent upon the hardware, there are marked
  160.    differences in memory access time in this region, which can affect the video
  161.    acceleration of a UMB-loaded VIz resident (see switch /H).
  162.  
  163.  
  164.    VIz updates relevant parameters in the BIOS data area (segment 40h), such as
  165.    cursor position (page 0 only) and type, video mode, page, and font, that are
  166.    also processed by VIz; while such updating degrades video acceleration time,
  167.    it also decreases the possibility of conflict with foreground utilities that
  168.    use BIOS data but bypass BIOS calls.
  169.  
  170.                 ----------------
  171.  
  172.    2.  BLOCK-AND-LINE CURSOR ALTERNATION MODULE
  173.  
  174.    To help cursor visualization in screens where the cursor is not easily seen,
  175.    as in some laptop displays, VIz provides a small resident module that allows
  176.    for the display of a (full-)block cursor, either continuously or alternating
  177.    with a line cursor. The alternation rate can be adjusted in steps of 54.9 ms
  178.    between about 0.055 s (/V1) and 5.5 s (/V99).  A zero alternation rate (/V0)
  179.    produces a continuously present block cursor. For the module to be loaded in
  180.    memory, VIz must be installed with any /V switch (see below), and it adds an
  181.    additional 100 bytes to the resident size of VIz.
  182.  
  183.    Very short or very long alternation rates are distracting or hard to follow.
  184.    When selecting a rate for laptop displays, start with a value of n=9 (.50 s)
  185.    or so.
  186.  
  187.    Block cursor alternation can be turned off by making this resident quiescent
  188.    with the switch /V+ (until its reactivation with /Vn). All cursor operations
  189.    use direct commands to the hardware, and assume register-level compatibility
  190.    with the Motorola 6845 CRT controller. This chip is present in MDA, CGA, and
  191.    HGC cards, while a 6845-compatible CRTC is a custom LSI chip in the IBM-EGA,
  192.    part of the Memory Controller Gate Array on the MCGA, or a part of the Video
  193.    Graphics Array on the VGA.
  194.  
  195.    Notice that the hardware-controlled blinking of the cursor is not eliminated
  196.    by this service. Hence, depending on the alternation rate selected, a 2-beat
  197.    frequency may be noticeable.
  198.  
  199.                 ----------------
  200.  
  201.    3.  ANSI-COMPATIBLE VIDEO FILTER MODULE
  202.  
  203.    MS-DOS and IBM PC-DOS files include ANSI.SYS, a console filter driver that
  204.    mediates a subset of American National Standards Institute (ANSI) standard
  205.    escape sequences for video functions as well as a supplementary subset for
  206.    keyboard functions (such as key reprogramming).
  207.  
  208.    VIz has a second, independently installable resident module that implements
  209.    standard ANSI escape sequences to control the console video functions. This
  210.    ANSI-compatible filter uses less than some 800 additional bytes of RAM when
  211.    installed. It can be turned off either by uninstalling all the VIz resident
  212.    modules or by selectively inactivating the filter. (The inactive filter can
  213.    also be reactivated.)
  214.  
  215.    The filter does not provide by itself much acceleration of DOS video input/
  216.    output as far as ANSI instructions are concerned.  Its advantages are small
  217.    resident size, the capability of being turned on or off, and its harmonious
  218.    working with the acceleration module of VIz.
  219.  
  220.  
  221.    COEXISTENCE WITH OTHER ANSI FILTERS
  222.  
  223.    The installation of the ANSI filter may be made contingent on not detecting
  224.    the presence of ANSI.SYS or another ANSI-like utility intercepting the FAST
  225.    CONSOLE interrupt (29h) of DOS, such as ANSI.COM (Copyright 1989 Ziff-Davis
  226.    Corp.), or the potential presence of such utilities may be ignored (and the
  227.    filter forced to install).
  228.  
  229.    The presence of an installed ANSI-like utility can be ascertained using the
  230.    Status/Usage/Help panel displayed when the command 'VIZ ?┘' is issued; the
  231.    Status line at the bottom of the screen displays one of the following:
  232.  
  233.     ANSI.SYS    Indicates that interrupt 29h (see below) points to a
  234.             resident code containing a device driver header with
  235.             the attributes of a character device servicing calls
  236.             to INT 29h and the device name 'CON.' This is likely
  237.             to be ANSI.SYS or an ANSI-compatible device driver.
  238.  
  239.     ANSI.COM    Indicates that interrupt 29h (see below) points to a
  240.             resident code containing the string 'CON    ' at the
  241.             place where the device driver name should be, but it
  242.             does not contain other elements of the device driver
  243.             header.  This is an ANSI-compatible resident utility
  244.             of the type of ANSI.COM.
  245.  
  246.     ANSI: No    Indicates absence of the above conditions.
  247.  
  248.  
  249.    ANSI IMPLEMENTATIONS
  250.  
  251.    The ANSI-compatible filter implements the following subset of ANSI 3.64-1979
  252.    standard escape sequences to control console video functions (see your MS/PC
  253.    DOS documentation of ANSI.SYS commands):
  254.  
  255.     Selection of the foreground and background colors on a color display or
  256.     the text attributes on a monochrome display system. The sequence syntax
  257.     is <Esc>[#;...;#m, where # is 30-37 to select a foreground color, 40-47
  258.     47 to select a background color, and 0-1, 4-5 or 7-8 to select the text
  259.     attributes.
  260.  
  261.     Selection of the video mode (similar to using the MODE command of DOS).
  262.     The sequence syntax is <Esc>[=#h or <Esc>[=#l, where # is 0-6 or higher
  263.     (depending on the adapter card in use).
  264.  
  265.     Selection of word wrapping, i.e. whether lines longer than the width of
  266.     the screen are truncated. The sequence syntax is <Esc>[?7h or <Esc>[?7l
  267.     to turn word wrapping ON or OFF, respectively.
  268.  
  269.     Cursor positioning for the following sequences:
  270.  
  271.         <Esc>[r#;c#H  Move to specified row (r#) and column (c#)
  272.         <Esc>[r#;c#f  Same a previous sequence
  273.         <Esc>[r#A     Move cursor up by specified number of rows
  274.         <Esc>[r#B     Move cursor down by specified number of rows
  275.         <Esc>[c#C     Move forward the specified number of columns
  276.         <Esc>[c#D     Move backward the specified number of columns
  277.  
  278.         <Esc>[s       Store current position of the cursor
  279.         <Esc>[u       Restore to the position stored by <Esc>[s
  280.  
  281.         <Esc>[K       Erase from the cursor to end of the line
  282.         <Esc>[2J      Clear all rows and home cursor (this sequence
  283.                   preserves current color attribute)
  284.  
  285.  
  286.    Not supported by the filter are the cursor-position-reporting ANSI sequence
  287.    (<Esc>[r#;c#R), and the supplementary set of sequences used by the ANSI.SYS
  288.    driver to permit reprogramming of the keyboard (i.e., <Esc>[#;'string';3p),
  289.    a set which is not part of the 1979 ANSI standard.
  290.  
  291.    Thus, you should consider using the ANSI filter of VIz, instead of ANSI.SYS
  292.    or other ANSI-like utility, when interested in using video escape sequences
  293.    alone, without any keyboard remapping.
  294.  
  295.                 ----------------
  296.  
  297.    4.  USAGE
  298.                    VIZ [/Switches] [;Comments]
  299.  
  300.    The switches can be entered from:
  301.  
  302.     (1) the DOS command line (COMMAND.COM shell prompt)
  303.     (2) a batch file
  304.     (3) a DOS environment string with the format VIZ=/SWITCH1.../SWITCHn
  305.  
  306.  
  307.    Switches can be given in any order.  Any character between space and slash
  308.    [/] can be used as a switch delimiter.  Switches are not case sensitive.
  309.  
  310.    Switches /A, /B, /C, /D, /I, /M, /P, /R, and /S are "sticky" parameters in
  311.    the sense that the video change they produce will remain in effect even if
  312.    VIz is made quiescent or is uninstalled.
  313.  
  314.    --------------------------------------------------------------------------
  315.    (*) Switches marked with asterisks are available only in registered copies
  316.    --------------------------------------------------------------------------
  317.  
  318.    SWITCH /?
  319.  
  320.    - Displays a panel showing the STATUS of video services: the StdOut stream
  321.      redirection, ANSI filter, DOS character processing and the current value
  322.      of the video page and mode. A succinct explanation of the status of each
  323.      each highlighted service can be obtained by depressing the left or right
  324.      cursor arrow keys or, when a Microsoft Mouse driver 6.0 (or a compatible
  325.      driver) is installed, by clicking the mouse on the 'Status' button.  The
  326.      descriptions can be erased by pressing key <F10>.
  327.  
  328.      If a video mode higher than n+128 (which does not clear the display when
  329.      selected [AT and PS/2]) is detected, the mode number in the Status panel
  330.      is followed by an asterisk; thus, video mode 131 is displayed as 3*.  In
  331.      addition to the status-line panels, the status of some 'on/off' switches
  332.      is also shown by '+' or '-' on the switches Menu before a given entry.
  333.  
  334.      If switch /? is selected and an EGA or VGA adapter is present, VIz saves
  335.      the contents of the palette registers before changing the attributes for
  336.      its various displays. (EGA users: The default IBM palette attributes are
  337.      restored if the BIOS fails to store properly the original data.)
  338.  
  339.    - The USAGE panel shows the menu of command switches; to cycle between the
  340.      main and auxiliary menu, press key <F2> or <M> or click the mouse on the
  341.      'Menu' button.
  342.  
  343.    - The HELP panel provides a brief description of the program and commands.
  344.      To display the Help panel, from the Status/Usage panel press key <F1> or
  345.      <H> (or click the mouse on the 'Help' button) to display the Help panel.
  346.      Press key <Esc> or <F2> to return to the previous panel.
  347.  
  348.      To exit the Status/Usage/Help panel, press key <X> or click the mouse on
  349.      the 'eXit' button.
  350.  
  351.  
  352.    * SWITCH /A[±]
  353.  
  354.      Installs a resident filter to implement (the video subset of) ANSI escape
  355.      sequences; the installation may be made contingent upon failure to detect
  356.      the presence of the DOS driver ANSI.SYS or some ANSI-like residents (/A),
  357.      or to ignore their potential presence (/A+).
  358.  
  359.      Although the filter can take advantage of VIz acceleration, its operation
  360.      does not require the enabling of the resident accelerator module, and its
  361.      activity can be controlled independently with the following switches:
  362.  
  363.      */A    If VIz is not yet installed, adds the ANSI filter module
  364.         to the resident code to be installed, provided that ANSI
  365.         or another logical device named 'CON     ' mediating int
  366.         29h (see #3 above) is not installed, and inactivates the
  367.         remapping of the EGA/VGA palette via /C+, /Cn:n, or /Cm.
  368.  
  369.  
  370.      */A+   If VIz is not yet installed, adds the ANSI filter module
  371.         to the resident code to be installed, even when ANSI.SYS
  372.         or a similar CON utility has already been installed, and
  373.         inactivates the remapping of the EGA/VGA palette via /C+
  374.         /Cn:n, or /Cm.
  375.  
  376.         If VIz is already installed, and the resident filter was
  377.         made inactive with /A-, /A+ reactivates the ANSI filter.
  378.  
  379.  
  380.      */A-   Inactivates the filter, if installed and active. It also
  381.         reactivates a previously active remapping of the EGA/VGA
  382.         palette.
  383.  
  384.      Defaults: /A = /A+ when VIz is installed.
  385.  
  386.      The ANSI module does not become resident unless switch /A[+] is specified
  387.      at the time VIz is being installed and cannot be added after installation
  388.      of the resident(s).
  389.  
  390.  
  391.    * SWITCH /Bn
  392.  
  393.      Selects the color for the screen border in text modes, and the background
  394.      and border color in graphic modes.  This color is specified by <n>, a one
  395.      or two digit number representing the Red-Green-Blue mixture for the color
  396.      using an octal (base 8) format ranging from 0 to 77 (see Switch C below).
  397.  
  398.      Switch /C+ also sets the screen border; the default border for the EGA is
  399.      black, and the screen background attribute for other color adapters.
  400.  
  401.  
  402.    * SWITCH /Cn:m±?
  403.  
  404.      Allows for color changes in the EGA/VGA color palette, which consists of
  405.      16 registers, and is used to map video memory data into colors.  Both in
  406.      (the EGA-compatible modes of) the VGA and the EGA, the value in each one
  407.      of these registers determines the amount of Red, Green, and Blue mixture
  408.      in the displayed color.
  409.  
  410.      This amount can be represented by the data bits <RGBrgb>, where <000rgb>
  411.      shows the color at 33%, <RGB000> at 66%, and <RGBrgb> at 100% intensity.
  412.      These bits, and their resultant color, are shown below using both binary
  413.      (base 1) and octal (base 8) number formats:
  414.  
  415.       ┌─────────┬───────┬─────────────┐
  416.       │ binary  │ octal │    Color    │    Since the binary format takes up a
  417.       ├─────────┼───────┼─────────────┤    lot of space it is more convenient
  418.      +│ 000 000 │  00   │ 100% black  │    to use the 2-digit octal format to
  419.       │ 000 001 │  01   │  33% blue   │    represent an RGB value. The binary
  420.       │ 000 010 │  02   │  33% green  │    equivalence of octal numbers is:
  421.       │ 000 011 │  03   │  33% cyan   │
  422.       │ 000 100 │  04   │  33% red    │
  423.       │ 000 101 │  05   │  33% magenta│         0o = 000000b
  424.       │ 000 110 │  06   │  33% yellow │         1o = 000001b
  425.       │ 000 111 │  07   │  33% white  │         2o = 000010b
  426.       ├─────────┼───────┼─────────────┤         3o = 000011b
  427.      +│ 001 000 │  10   │  66% blue   │         4o = 000100b
  428.      +│ 010 000 │  20   │  66% green  │         5o = 000101b
  429.      +│ 011 000 │  30   │  66% cyan   │         6o = 000110b
  430.      +│ 100 000 │  40   │  66% red    │         7o = 000111b
  431.      +│ 101 000 │  50   │  66% magenta│        10o = 001000b
  432.      +│ 110 000 │  60   │  66% yellow │        11o = 001001b
  433.      +│ 111 000 │  70   │  66% white  │        12o = 001010b
  434.       ├─────────┼───────┼─────────────┤        13o = 001011b
  435.      +│ 001 001 │  11   │ 100% blue   │        14o = 001100b
  436.      +│ 010 010 │  22   │ 100% green  │        15o = 001101b
  437.      +│ 011 011 │  33   │ 100% cyan   │        16o = 001110b
  438.      +│ 100 100 │  44   │ 100% red    │        17o = 001111b
  439.      +│ 101 101 │  55   │ 100% magenta│        20o = 010000b
  440.      +│ 110 110 │  66   │ 100% yellow │           etc
  441.      +│ 111 111 │  77   │ 100% white  │
  442.       └─────────┴───────┴─────────────┘
  443.         (+) IBM default color palette
  444.  
  445.      Of course, other colors can also be generated when using a different RGB
  446.      mixture value.  For instance, a desaturated (i.e., whitish) RGB sequence
  447.      is obtained in the octal range 71o through 76o.
  448.  
  449.      This palette control is also enabled (versions 2.42+) for the monochrome
  450.      mode of VGA and MCGA video adapters to remap color codes into gray-scale
  451.      values.  The following services are available:
  452.  
  453.      */C:n  The RGB values of the palette registers is set by a 16-
  454.         number sequence in which these two-digit, octal numbers
  455.         are separated by colons (:) as in the following example
  456.  
  457.            /C03:00:20:30:40:50:01:77:70:11:22:33:44:55:66:76
  458.  
  459.         which shows the default palette colors used by VIz when
  460.         switch /C? is used.  If less than 16 numbers are given,
  461.         their RGB values are loaded into the respective palette
  462.         registers starting from register 0.  When a non-numeric
  463.         value is provided, the palette is not changed.
  464.  
  465.  
  466.      */Cm±  The VGA and MCGA adapters emulates a 16-color text mode
  467.         for a monochrome display, and the palette consists of 4
  468.         groups of four shades of gray. In MONOCHROME modes, /Cm
  469.         loads a palette in which the gray-scale value increases
  470.         uniformly with increasing attribute values; the palette
  471.         corresponds to the following command
  472.  
  473.            /C00:50:01:31:61:12:42:03:43:04:44:05:55:26:07:77
  474.  
  475.         Switch /Cm can also be used with CGA monochrome systems
  476.         (e.g., laptops) to translate color attributes into gray
  477.         scale values.
  478.  
  479.         In COLOR modes, switch /Cm± enables [+] or disables [-]
  480.         the gray-scale summing of the RGB mixture. The summing,
  481.         carried out by the BIOS, sets the gray-scale equivalent
  482.         of a given color to 30%, 50%, and 11% of the Red, Green
  483.         and Blue value in the video digital-to-analog registers
  484.         (these percentages are close to the relative brightness
  485.         of the displayed 'pure' red, green, and blue).
  486.  
  487.  
  488.       /C?   This service provides a display of the palette registers
  489.         and the corresponding RGB mixture in octal format. It is
  490.         possible to alter the RGB mixture of any register simply
  491.         by pressing <R>, <G>, or <B> and then <> or <>.  These
  492.         arrows cycle through 0%, 33%, 66%, and 100% intensity of
  493.         the respective RGB component.  The actual RGB mixture of
  494.         the selection is also shown on a graph.  Press the right
  495.         or left arrow to cycle through the registers, and <HOME>
  496.         to go to register 0 or <END> to go to register 15.
  497.  
  498.         Press <ENTER> to save the current palette, <ESC> to quit
  499.         the service without any palette changes, <DEL> to reject
  500.         any change and to restart the service, and the indicated
  501.         function keys to load several available palettes.
  502.  
  503.  
  504.      */C-   Use to inactivate the implementation of EGA/VGA palette
  505.         changes via VIz.  The video attributes remain unchanged
  506.         until the a video operation reloads the palette, e.g. a
  507.         video mode change.  Switch /A+ also turns off remapping
  508.         of the palette.
  509.  
  510.  
  511.      */C+   Use to reactivate the implementation of EGA/VGA palette
  512.         changes via VIz; it reloads the last color palette that
  513.         was selected via VIz.  Switch /A- reactivates remapping
  514.         if remapping was in effect prior to an /A+ request.
  515.  
  516.      Defaults: /C = /C+.
  517.  
  518.      The selected EGA/VGA color palette changes are asserted (i.e. the palette
  519.      is loaded with the selected RGB values) each time a video mode change, or
  520.      a video font change, is requested and VIz is enabled (i.e., no /Q switch,
  521.      no graphics mode, and no video page other than 0).
  522.  
  523.      To preserve the small size of Viz, there is no hotkey pop-up service.  If
  524.      during the execution of an application the color palette changes, the RGB
  525.      values selected via VIz cannot be asserted except by shelling to DOS (and
  526.      executing VIz with the switch /C+ to reload the palette) or by triggering
  527.      a video mode/font change.
  528.  
  529.  
  530.    * SWITCH /D±n
  531.  
  532.      Adjusts brightness of screen (VGA card only); the brightness change step
  533.      is specified by the sign and value of <±n>, which is a decimal number of
  534.      1 or 2 digits, with or without a sign, in the range from -63 to +63. Use
  535.      of high negative or positive numbers can result in an unreadable screen.
  536.      Selection of /D0 results in the restoration of the screen to its default
  537.      settings (as dictated by the manual controls of the monitor).
  538.  
  539.      Defaults: /D = /D+2; /D1 = /D+1; /D- = /D-2
  540.  
  541.  
  542.    * SWITCH /E
  543.  
  544.      Creates or updates the variable VIZ=/SWITCH1.../SWITCHn in the DOS global
  545.      environment, where /SWITCH1.../SWITCHn are the switches to be implemented
  546.      when VIz is executed from the DOS command line without any arguments.  If
  547.      the 'VIZ' variable already exists, switch /E updates the contents of this
  548.      variable.  Although switch /E is incorporated into the variable contents,
  549.      its presence is ignored when VIz uses this variable as input.
  550.  
  551.      Switch /E modifies the DOS global environment irrespective of whether the
  552.      resident shell is the initial copy of COMMAND.COM (global environment) or
  553.      a secondary copy (local environment).  See the INSTALLATION section below
  554.      for more details.  No defaults.
  555.  
  556.  
  557.    * SWITCH /FHtg
  558.  
  559.      If VIz detects a HERCULES card adapter (HGC or HGC+), switch /FHt changes
  560.      the card to text mode (80x25) whereas switch /FHg changes the card to its
  561.      default (page 0) 720x348 graphics mode.
  562.  
  563.    * SWITCH /Fn±
  564.  
  565.      If VIz detects an EGA or VGA adapter, switch /Fn permits the selection of
  566.      the number of screen rows to be displayed.  The following video fonts are
  567.      supported: 12 or 14 (EGA or VGA), 25 (EGA and VGA), 28 (VGA), 35 (EGA and
  568.      VGA) and 43 or 50 (EGA or VGA) screen rows.  Except for the 12/14 and 35-
  569.      row fonts, implementation of the selected font is maintained until switch
  570.      /F-, which disables font implementation, or another font is selected; the
  571.      font implementation can be reenabled with /F+.
  572.  
  573.      If a number <n> is not specified, switch /F toggles between 25-row and 43
  574.      (EGA) or 50-row (VGA) screens.  (If an EGA/VGA adapter is found, VIz also
  575.      selects the alternate BIOS print-screen service to avoid the default BIOS
  576.      print-screen routine that works with 25 rows only.)  For a 25-row screen,
  577.      an 8x14 font is used in an EGA and a 9x16 font in a VGA.  Fonts with more
  578.      than 25 rows can be loaded only if the video page is between 0 and 3.
  579.  
  580.      No defaults.
  581.  
  582.  
  583.    * SWITCH /Gn
  584.  
  585.      The frequency in Hz (cycles per second) of 55-ms bell tones is specified
  586.      by <n>, a decimal number of up to 4 digits, in the range from 25 to 5000
  587.      Hz.  Values below 25 become 25 Hz and above 5000 become 5000 Hz; if more
  588.      than 4 digits are given only the four least-significant digits are used,
  589.      e.g., 50,000 Hz is read as 0000, triggering the use of 25 Hz.
  590.  
  591.      The bell tones always last 55 ms (one tick of the 8253/8254 timer chip).
  592.      Since the tones are forced to begin at the start of a 55-ms tick period,
  593.      stacked bell rings will result in a distinctive, staccato-like burst due
  594.      to the intervening silent 55-ms tick periods.
  595.  
  596.      Most computer speakers seem to work properly within the range from about
  597.      100 Hz to about 3,000 Hz.  Frequencies for the octave starting at middle
  598.      are C=523 Hz, D=587 Hz, E=659 Hz, F=699 Hz, A=880 Hz, and B=988 Hz.  The
  599.      frequencies for higher [lower] octaves increase [decrease] approximately
  600.      by a factor of 2 per octave change from the above values.
  601.  
  602.      Defaults: /G = /G440.
  603.  
  604.  
  605.    * SWITCH /H
  606.  
  607.      Loads the resident in the Upper Memory Area (UMA), between 640 and 1,024
  608.      kb of conventional memory.   This is a region below the 1-Mb boundary of
  609.      the memory accessible by 086 CPUs but above the area whose allocation is
  610.      always controlled by DOS.  The switch requires an available upper memory
  611.      block (UMB) of about .9 to 1.7 kb (depending on the number of modules to
  612.      be loaded), which is allocated by the program itself either via a direct
  613.      XMS request or, when DOS controls UMB allocations (i.e., DOS 5.0+ linked
  614.      to the UMA under the command 'DOS=UMB'), via DOS calls.  UMB allocations
  615.      require the presence of an XMS manager (XMM) supporting the UMB services
  616.      10h-11h of the XMS 2+, and (if the XMM lacks the capability of remapping
  617.      memory) the presence of an UMB provider.
  618.  
  619.    * SWITCH /Hn
  620.  
  621.      A lower upper-memory limit for the UMB loading can also be requested via
  622.      switch /Hn, in which <n> is a four-digit hexadecimal number between A000
  623.      (640 kb) and FFFF (1,024 kb), in order to avoid or select specific areas
  624.      of upper memory.
  625.  
  626.    * SWITCH /Hn@
  627.  
  628.      A lower-memory resident marker can also be installed along with the UMB
  629.      resident via switch /H@ or /Hn@; the marker occupies 144 bytes of lower
  630.      conventional memory, can be identified in some memory mapping utilities
  631.      by the name
  632.                    VIz @ UMB
  633.  
  634.      and is released from memory when the UMB resident is uninstalled.  This
  635.      marker may be used (1) to remind that the resident is already installed
  636.      in upper memory, (2) to help locate the UMB installation address in the
  637.      case of some mapping utilities, and (3) to help avoid removal conflicts
  638.      when lower and upper-memory residents are interspersed.
  639.  
  640.      Defaults:  Low-memory installation if any error is found during the UMB
  641.      loading; high-memory installation below lower-address limit if UMBs are
  642.      not available above such limit.
  643.  
  644.  
  645.    * SWITCH /I±
  646.  
  647.      Selects how background color attributes with a hexadecimal value in the
  648.      range from 8h to Fh (bit 7=1) are displayed in text modes. No defaults.
  649.  
  650.      */I-   High-bit attributes produce a blinking character on a
  651.         background of normal (medium) intensity.
  652.  
  653.      */I+   High-bit attributes result in a steady character on an
  654.         intense background.
  655.  
  656.  
  657.    * SWITCH /K±
  658.  
  659.      Disables [+] or enables [-] access of the CPU to video RAM in VGA/MCGA.
  660.      It can be used to kill BIOS-mediated displays that cannot be redirected
  661.      to the NUL device.
  662.  
  663.      */K-   Enable CPU access to video RAM (normal display).
  664.  
  665.      */K+   Disable CPU access to video RAM (blanked display).
  666.  
  667.      Defaults: /K = /K+.
  668.  
  669.  
  670.    * SWITCH /Mn
  671.  
  672.      Selects the video mode specified by <n>, which is a number in the hexa-
  673.      decimal range of 0 through FF.  Note that there is no checking that the
  674.      selected mode is valid for the adapter.  No defaults.
  675.  
  676.  
  677.    * SWITCH /N±
  678.  
  679.      Determines whether or not messages dealing with nonfatal errors or non-
  680.      critical updates are displayed.
  681.  
  682.      */N-   Non-fatal error (or update) messages are displayed via
  683.         the StdOut device of DOS, which can then be redirected
  684.         if switch /Z+ has not been selected.
  685.  
  686.      */N+   Non-fatal error (or update) messages are not displayed
  687.         (as if they had been sent to the NUL device).
  688.  
  689.      Defaults: /N = /N+; null = /N- on installation.
  690.  
  691.      Since VIz beeps when a command error is detected, /N- should need to be
  692.      used only after such a beep to display the error message again.  Please
  693.      note that the installing, uninstalling, and fatal-operation messages of
  694.      VIz cannot be redirected and are always displayed.  The final status of
  695.      operation can be monitored in batch files with the ERRORLEVEL commands.
  696.  
  697.  
  698.    * SWITCH /Pn
  699.  
  700.      Selects the video page specified by a number <n> in the range of 0 to 7
  701.      for 25-row display EGA/VGA, 0 to 3 for 43/50-row display EGA/VGA, and 0
  702.      to 3 for CGA.  No defaults.
  703.  
  704.  
  705.    SWITCH /Q
  706.  
  707.      Forces the video accelerator into a quiescent mode; if loaded, the ANSI
  708.      filter and the Cursor blink resident are not inactivated.  The overhead
  709.      video time for having VIz quiescent is an additional 2% or less of that
  710.      without VIz.  (Even when it is quiescent or during graphic video modes,
  711.      the accelerator still monitors the video interrupt to check for page or
  712.      mode change requests.)  No defaults.
  713.  
  714.  
  715.    * SWITCH /R±
  716.  
  717.      Selects the mode of processing text input/output by DOS.  In the normal
  718.      IO processing mode, the DOS kernel builds a device request for a single
  719.      character output, makes a Ctrl-C check, and then passes this request to
  720.      the StdOut console device; if no error is found, the buffer pointer and
  721.      character count are updated.  This process is repeated until either the
  722.      end-of-file character (ASCII 26, Ctrl-Z) is found or all characters are
  723.      processed.  Tabs (ASCII 9) are expanded to 8 spaces.
  724.  
  725.      In the 'raw' or binary mode, DOS does not filter the stream for control
  726.      characters, but passes a single request header to the device. Depending
  727.      on the DOS version, the DOS-mediated video output is faster in raw mode
  728.      by factor of about 1.40 or so.
  729.  
  730.      */R-   Changes DOS processing to the normal or 'cooked' mode.
  731.  
  732.      */R+   Changes DOS processing to a binary or 'raw' mode; when
  733.         this mode is selected, issue the 'BREAK=ON' command to
  734.         facilitate BREAK detection.
  735.  
  736.      No defaults.
  737.  
  738.      When executed, some utilities set the DOS processing mode to 'raw,' and
  739.      then change it to normal when they finish, irrespective of the original
  740.      mode.  Other utilities set the mode to 'raw' and leave it on.  Repeated
  741.      use of switch /R+ may be necessary to maintain the raw processing mode.
  742.  
  743.  
  744.    * SWITCH /Sn±
  745.  
  746.      Enables [Sn+] or disables [Sn-] special services triggered by some keys
  747.      that can have untoward effects under some circumstances, especially for
  748.      LAN servers.
  749.  
  750.      */S1±  Enables [+] or disables [-] the printing of the screen
  751.         triggered by the <PrtSc> key.  /S1- is useful when the
  752.         number-pad keys are used often, and the possibility of
  753.         triggering unwanted prints is commensurably high. More
  754.         importantly, if the machine is not connected to an on-
  755.         line printer, <PrtSc> will freeze the system.
  756.  
  757.      */S2±  Enables [+] or disables [-] the dynamic halt, which is
  758.         triggered by the <Pause> key (PS/2s and COMPAQs) or by
  759.         the <Ctrl><NumLock> combination (in PCs).  The halt is
  760.         maintained until another key is pressed.  This service
  761.         is available only if the Cursor module is also loaded.
  762.  
  763.      Defaults: /S = /S1+ (enables BIOS alternate print-screen service).
  764.  
  765.      If /S1± (or /S± or simply /S) is requested at the time of installation,
  766.      VIz also selects the alternate BIOS print-screen service if the adapter
  767.      is an EGA or VGA, in order to handle screen lengths longer than 25 rows
  768.      (this alternate service is needed if other screen fonts are to be used,
  769.      since the BIOS default service only prints 25 lines.
  770.  
  771.      Some EGAs do not work properly when this alternate print-screen service
  772.      is enabled.  If the selection of switch /S1± during installation yields
  773.      a print-screen malfunction, install VIz without selecting /S1±, /S±, or
  774.      /S±, and only then select switch /S1 in a subsequent execution.
  775.  
  776.  
  777.    SWITCH /U
  778.  
  779.      Uninstalls the resident from memory.  The request is not honored if any
  780.      of the interrupt vectors intercepted by the program do not point to the
  781.      resident, indicating subsequent installation of other resident(s) using
  782.      the same interrupt(s) or the revectoring of such interrupts by a prior,
  783.      ill-behaved resident.
  784.  
  785.      In general, the program should be uninstalled only when it was the last
  786.      resident to be loaded; in practice, however, it can also be uninstalled
  787.      if subsequently loaded residents do not hook the same interrupts as the
  788.      program (even though this increases memory fragmentation, the resulting
  789.      "hole" is innocuous, and may be used by DOS for other purposes, such as
  790.      local environment blocks).  No defaults.
  791.  
  792.  
  793.    SWITCH /V±n
  794.  
  795.      Selects the loading of the resident cursor module. This module does not
  796.      become resident unless /V+ or /Vn is specified at the time VIz is being
  797.      loaded; this module cannot be added to the resident after the loading.
  798.  
  799.       /Vn   Enforces a cursor whose shape alternates between a full
  800.         block and a thin line, in which <n> is a decimal number
  801.         (of 1 or 2 digits) specifying the alternation rate from
  802.         0.055 s [/V1] to 5.5 s [/V99].
  803.  
  804.       /V0   Forces the display of a continuous, full block cursor.
  805.  
  806.       /V-   Disables the display of the cursor.  Due to a potential
  807.         BIOS conflict, switch /V- is ignored at the time of VIz
  808.         loading; to make the cursor invisible, first use /V+ or
  809.         /Vn and then /V-.
  810.  
  811.       /V+   Reverses the cursor changes produced by /Vn and /V-.
  812.  
  813.      Defaults: /V = /V+ when VIz is installed.
  814.  
  815.  
  816.    SWITCH /Z±
  817.  
  818.      Directs the video output through INT 21h, function 40h, device handle 1
  819.      ('write to StdOut device') to the DOS console driver or the accelerator
  820.      module of VIz.  Redirection of the INT 21h/40h/1-output to VIz produces
  821.      considerable acceleration of the output of most display services of DOS
  822.      version 2 and higher as well as for other utilities using the write-to-
  823.      StdOut service.  Note that the redirection to VIz overrides redirection
  824.      mediated by the commands '>' '>>' and '<' at the DOS command line, i.e.
  825.      the video contents are always displayed.
  826.  
  827.       /Z-   INT 21/40h/1 video output is allowed to be processed by
  828.         the installed CON driver.
  829.  
  830.       /Z+   INT 21/40h/1 video output is redirected to the teletype
  831.         subservice of VIz.  Each TAB is expanded to 8 spaces in
  832.         text modes with 80 or more columns (producing conflicts
  833.         with the 4-space expansion used by the command DIR/W of
  834.         DOS) and to 4 spaces in text modes of 40 columns.
  835.  
  836.      Defaults: /Z = /Z-; null = /Z- on installation.
  837.  
  838.                     --------
  839.  
  840.    The COMMENTS may be added in the DOS command line after the specification
  841.    of the switches.  These comments, which may be useful in clarifying batch
  842.    files, must be preceded by a semicolon (;), and are ignored by VIz.
  843.  
  844.    Do not use the DOS redirection and pipe characters in the comments as DOS
  845.    will attempt to implement the implied redirection or pipe request.
  846.  
  847.                 ----------------
  848.  
  849.    5.  INSTALLATION
  850.  
  851.    It is recommended that VIz be installed before other residents also using
  852.    the BIOS interrupt 10h (video input/output).  Due to the intrinsic nature
  853.    of the implementation, VIz does not chain some the interrupt-10h calls to
  854.    residents located down the intercepted interrupt chain. In order for such
  855.    residents to have access to these data, they need to be loaded after VIz.
  856.    Thus, it may be convenient to install VIz early in the AUTOEXEC.BAT file.
  857.  
  858.    The larger the number of residents intercepting interrupt 10h before VIz,
  859.    the slower the absolute video acceleration provided by the program.  This
  860.    is because each call has to be processed by each element in the interrupt
  861.    chain.  One way to minimize the problem is to install a minimum number of
  862.    residents via the AUTOEXEC.BAT and, before executing a given application,
  863.    install additional residents via a batch file that also executes the main
  864.    application, and removes these transient residents upon the completion of
  865.    the task. (VIz itself may fall in this transient category.)
  866.  
  867.    If you intend to make use of the resident ANSI filter in a more permanent
  868.    manner, VIz may also be installed just as described above; if you want to
  869.    remove the ANSI component after a given ANSI-oriented task, however, then
  870.    VIz should be the last resident to be installed prior to such a task.
  871.  
  872.    The driver ANSI.SYS needs not to be loaded or, if loaded, removed, to use
  873.    the ANSI resident of VIz.  However, if any ANSI-like utility were already
  874.    installed and active, and VIz were switched to its 'fast DOS' mode (/Z+),
  875.    such an utility might be unable to process escape sequences, unless these
  876.    sequences were sent directly to the CON device via calls to interrupt-29h
  877.    instead of interrupt 21h.
  878.  
  879.  
  880.    5.1  INSTALLATION IN UPPER MEMORY
  881.  
  882.    This section describes in more detail aspects of the active (i.e., self-
  883.    loading) or passive (e.g. via DOS LOADHIGH) installation of the resident
  884.    in the upper memory region of conventional memory.
  885.  
  886.  
  887.    DIRECT UPPER-MEMORY AREA LOADING
  888.  
  889.    The utility can self-install the resident in the upper memory area (UMA),
  890.    that is, RAM addresses between 640 kb and 1024 kb of conventional memory,
  891.    via switch /H (or its subfunctions /Hn, /H@, and /Hn@).  Program releases
  892.    prior to version 4.02 lack this feature.
  893.  
  894.    The allocation of UMA blocks (UMBs) is arbitrated by an XMS manager (XMM)
  895.    version 2.0 or higher; the XMM must be installed prior to the UMB-loading
  896.    of the resident.  Allocation also requires the remapping of UMA addresses
  897.    by a UMB provider, when such a task is not implemented by the XMM itself.
  898.    The XMM HIMEM.SYS and the UMB-provider EMM386.EXE are distributed with MS
  899.    DOS 5.0; the allocation of UMBs is controlled by DOS when these 2 drivers
  900.    are installed, and the command 'DOS=UMB' is added to the CONFIG.SYS file.
  901.    Of course, other 386-specific memory managers, such as 386MAX or QEMM386,
  902.    provide both UMB remapping and XMS support.  All XMMs require DOS version
  903.    3.0 or higher.
  904.  
  905.    Switch /Hn, where A000 ≤ n ≤ FFFF (hexadecimal), allows the specification
  906.    of a minimum upper-memory limit for the UMB to avoid UMA regions having a
  907.    very slow access time (or to preserve regions with a fast access time for
  908.    other utilities that require faster times, such as a disk cache or screen
  909.    accelerator), or to avoid fragmentation of the UMA when UMB allocation is
  910.    not controlled by DOS 5, but by the XMM itself.  Such a fragmentation may
  911.    occur when the XMM allocates blocks on a first-fit basis, i.e., the first
  912.    available UMB having the lowest UMA address is allocated, irrespective of
  913.    whether or not a (smaller) block matching the requested size is available
  914.    at a higher UMA address.  Unless the size of the available UMBs increases
  915.    with increasing memory address, first-fit allocation of a small UMB leads
  916.    to the breaking of large UMA blocks into smaller ones, thus hampering the
  917.    UMB installation of larger residents.
  918.  
  919.    When DOS controls the UMB allocation, the program enforces the allocation
  920.    of the resident block on a best-fit basis when <n> is not specified, that
  921.    is, all available blocks are searched (by DOS), and the one matching most
  922.    closely the size requested is allocated.
  923.  
  924.    When DOS controls UMB allocation and <n> is specified, UMBs are allocated
  925.    on a first-fit basis.  While this may contribute to UMA fragmentation, it
  926.    allows for the checking of a minimum memory limit in those cases in which
  927.    the selection or avoidance of a specific UMA region is more important.
  928.  
  929.    Hence, compared to the upper-memory installation provided by the LOADHIGH
  930.    command of DOS 5.0, or similar services provided by some memory managers,
  931.    program self-loading into a UMB has several advantages, including: (1) it
  932.    does not require an initial free block of upper memory of the size of the
  933.    entire program (as opposed to the size of its resident only), (2) it does
  934.    allow user control on the selection of the upper-memory block, and (3) it
  935.    can help reduce UMA fragmentation.
  936.  
  937.    NOTE:
  938.    The address and size of available UMBs can be obtained with MEM.EXE, when
  939.    DOS controls UMB allocation, or with the memory manager itself, when this
  940.    allocation is controlled by 386-specific memory managers. In either case,
  941.    these data can also be obtained with UMAX.EXE, a UMA mapping utility that
  942.    is distributed by the author.
  943.  
  944.  
  945.    HIGH-LOADING VIA MEMORY MANAGERS OR DOS 5+
  946.  
  947.    Of course, the resident can also be installed in the UMA via a 386-memory
  948.    manager or via (UMB-linked) DOS 5.0, provided that there is enough memory
  949.    for the actual size of the entire program, and any additional memory that
  950.    may be needed by the loading utility.
  951.  
  952.    To minimize disk storage, the program is distributed as a compressed file
  953.    that expands upon its execution. The difference between the actual loaded
  954.    size and the nominal directory size may create conflicts with high-memory
  955.    loading programs that fail to measure the actual size: When the available
  956.    high memory is not sufficient to permit the file expansion, but is larger
  957.    than the nominal directory size, such programs will load the (compressed)
  958.    utility. The subsequent expansion will then overwrite adjacent memory and
  959.    likely crash the memory manager or DOS, or both.
  960.  
  961.    The program expands by a factor of about 1.33.
  962.  
  963.    NOTE:  The program requires an additional 2,600 bytes of available memory
  964.    beyond its decompressed size to be able to implement switch /F14 or /F35;
  965.    Screen contents are restored after the panels displayed by switch /C? and
  966.    /? only if an additional 4,600 bytes of memory are available.
  967.  
  968.  
  969.    5.2  UPPER-MEMORY UPDATING
  970.  
  971.    When the program has been installed in upper memory, it does not require
  972.    a high-memory loading utility to update its resident and all updates can
  973.    be made via program executions from the DOS-command line.  This obviates
  974.    the restriction (of some memory systems) of having to maintain a pool of
  975.    of free upper memory simply to load the entire program to update a small
  976.    resident.  Program releases prior to version 3.40 lack this feature.
  977.  
  978.  
  979.    5.3  UPPER-MEMORY DEALLOCATION
  980.  
  981.    When resident deallocation is requested (switch /U) from the DOS command
  982.    line (as opposed to via upper-memory loading utilities), the resident is
  983.    removed from memory even when it was loaded in the UMA; the confirmation
  984.    request of versions 3.00 to 3.16 is no longer required.
  985.  
  986.    When switch /U is requested via a high-memory utility be aware that some
  987.    of these utilities warn that a "resident installation has failed."  This
  988.    warning is harmless and may be ignored.
  989.  
  990.  
  991.    5.4  MEMORY MAPPING UTILITIES
  992.  
  993.    Although the program releases its own copy of the environment at the time
  994.    of installation (to reduce resident size), the resident can be identified
  995.    in lower-memory usage maps by the name
  996.  
  997.                      VIzxxx
  998.  
  999.    that appears in the command-line listing of most memory mapping utilities
  1000.    irrespective of the actual contents of the command line when this program
  1001.    is installed in lower conventional memory; in this name, 'xxx' represents
  1002.    the release number (e.g., 420).
  1003.  
  1004.    However, when UMB loading is mediated by the XMS directly (e.g., extended
  1005.    memory manager and DOS versions 2 to 4, or DOS 5 not configured under the
  1006.    command 'DOS=UMB'), and the resident is installed in a UMB via switch /H,
  1007.    most memory mapping utilities do not list the allocated UMB, lump it with
  1008.    other allocated blocks, or fail to show the name of the resident.  If the
  1009.    identification of the UMB resident is required, use switch /H@ or /Hn@ to
  1010.    load in lower RAM a small resident marker that shows up in memory maps.
  1011.  
  1012.    When the allocation of UMBs is controlled by DOS (e.g. DOS 5.0 configured
  1013.    under the command DOS=UMB, and the drivers HIMEM.SYS and EMM386.EXE), the
  1014.    UMB resident can be identified with some mapping utilities (e.g. MEM.EXE)
  1015.    although it is often listed as "Data" instead of "Program."  Other memory
  1016.    mapping utilities identify the UMB resident only when an associated lower
  1017.    memory marker is also installed.
  1018.  
  1019.                 ----------------
  1020.  
  1021.    6.  TECHNICAL INFORMATION
  1022.  
  1023.    This section describes information that may be of use in case of conflicts
  1024.    arising when other terminate-and-stay resident programs are loaded.
  1025.  
  1026.  
  1027.    6.1  INTERRUPTS
  1028.  
  1029.    The following hardware and software interrupts are intercepted depending on
  1030.    the program configuration:
  1031.  
  1032.    INTERRUPT 8h (system timer)
  1033.  
  1034.    Channel 0 of the 8253/8254 timer chip produces a hardware interrupt (IRQ0),
  1035.    interrupt 8h, about 18.2 times a second that is used by the system time-of-
  1036.    day clock. When the cursor module is installed, switch /Vn (n=0 or 1 to 99)
  1037.    forces the display of the block cursor, either in continuous or alternating
  1038.    manner. Cursor shape is implemented via commands using either 16-bit (word)
  1039.    or 8-bit (byte) output, depending on the VIz version that was selected.
  1040.  
  1041.    INTERRUPT 10h (video BIOS)
  1042.  
  1043.    The accelerator module of VIz intercepts the ROM BIOS video interrupt, 10h.
  1044.    When the system is in page 0 and a text mode, video acceleration occurs for
  1045.    subfunctions 0h through Eh, except for subfunctions 4h, 7h, Bh, and Ch.
  1046.  
  1047.    INTERRUPT 21h (DOS services)
  1048.  
  1049.    Starting with version 2.0, DOS allows the redirection of the Standard Input
  1050.    (StdIn) and Standard Output (StdOut) console device, permitting programs to
  1051.    send input to or to receive output from other programs.  Unless redirected,
  1052.    the StdIn comes from the keyboard and the StdOut goes to the screen.  These
  1053.    and some other devices can be addressed by predefined DOS 'file handles' as
  1054.    if they were disk files.  A common DOS-mediated technique to send output to
  1055.    the screen is to write to the handle 1 (StdOut) via interrupt 21h, function
  1056.    40h; in fact, this is the preferred method of DOS-mediated video output for
  1057.    DOS version 2.0 or higher.
  1058.  
  1059.    The accelerator module of VIz also intercepts interrupt 21h. Switch /Z+ re-
  1060.    directs the 21h/40h/1-console stream (StdOut) to the accelerator, resulting
  1061.    in significant accelerations of the DOS video services. The acceleration is
  1062.    not increased by setting the DOS mode to "raw" (see below).  Switch /Z- (or
  1063.    default installation) permits the 21h/40h/1-video output to be processed by
  1064.    the 'CON' device.
  1065.  
  1066.    The redirection of StdOut to VIz does not conflict with the CLS command (as
  1067.    the redirection does not affect interrupt 29h [see section 6.2]). Selection
  1068.    of switch /Z+, however, voids any redirection of the StdOut, including that
  1069.    to the 'NUL' device (e.g. to avoid some messages), since the 21h/40h-stream
  1070.    is intercepted by VIz before the output can be redirected by DOS.
  1071.  
  1072.    Switch /Z requests are not disregarded when ANSI.SYS, ANSI.COM, or VIz-ANSI
  1073.    filter is active.  The redirection of StdOut to VIz by switch /Z+, however,
  1074.    will conflict with ANSI commands sent to the CON device via standard-output
  1075.    calls to INT 21h, function 40h/1.  In contrast, ANSI commands using INT 29h
  1076.    are not affected by switch /Z+ (see below).
  1077.  
  1078.    INTERRUPT 29h (fast console)
  1079.  
  1080.    The ANSI-compatible module of VIz intercepts interrupt 29h, an undocumented
  1081.    feature present in all recent versions of DOS. INT 29h is normally provided
  1082.    by the built-in console device driver of DOS, and consists of a call to the
  1083.    BIOS interrupt 10h.  DOS uses INT 29h instead of the normal request-passing
  1084.    mechanism to accelerate output to the current 'CON' device. The ANSI module
  1085.    filters this output.
  1086.  
  1087.    If a request to inactivate the installed ANSI filter is encountered (switch
  1088.    /A-), VIz checks whether the INT 29h can be restored to its original memory
  1089.    address. If the revectoring is not possible (i.e. when another resident has
  1090.    also intercepted INT 29h), this filter remains partially active in order to
  1091.    handle an ANSI escape sequence generated by COMMAND.COM to clear the screen
  1092.    when a CLS command is detected (see below); other ANSI escape sequences are
  1093.    ignored by the filter and passed to the screen.  Hence, when revectoring is
  1094.    possible, switch /A- has the same effect as installing VIz without a switch
  1095.    /A, except that the memory occupied by the ANSI filter is not released; the
  1096.    filter is reactivated by a subsequent call to execute VIz with switch /A+.
  1097.  
  1098.    VIz versions 3.64 and higher do not redirect interrupt 29h to the teletype
  1099.    service of VIz any longer (old switch /X±), since a much faster DOS output
  1100.    can be obtained with switch /Z.
  1101.  
  1102.  
  1103.    6.2  CLS COMMAND AND INT 29h
  1104.  
  1105.    The internal console device driver installed during booting handles the CLS
  1106.    as well as INT-29h service. The CLS procedure of COMMAND.COM first tests to
  1107.    see if (1) the standard-output handle is associated with a character device
  1108.    driver (bit 7=1), and (2) the driver services INT 29h (bit 4=1).  If one or
  1109.    both tests fail, or if both tests are successful but the vector for INT 29h
  1110.    does not point to the memory segment of the DOS kernel, COMMAND.COM outputs
  1111.    the ANSI escape sequence <Esc>[2J to INT 29h; otherwise, it makes a call to
  1112.    INT 10h, subfunction 6 of the BIOS to clear the screen.
  1113.  
  1114.    When INT 29h cannot be revectored on /A-, the partial driver activity slows
  1115.    down slightly the DOS video output whenever the ASCII character 27 (Esc) is
  1116.    found in the character stream. This partial activity is needed, however, as
  1117.    DOS issues an ANSI escape sequence to clear the screen whenever INT 29h has
  1118.    been revectored.  Thus, if VIz were not to retain its ANSI driver partially
  1119.    active when revectoring of INT 29h is not possible, the DOS escape sequence
  1120.    would be displayed (without clearing the screen) whenever a CLS command was
  1121.    issued.
  1122.  
  1123.  
  1124.    6.3  ENVIRONMENT VARIABLE 'VIZ'
  1125.  
  1126.    When the program is executed without arguments from the DOS command line
  1127.    (or a batch file), it searches the DOS environment for a variable having
  1128.    the format
  1129.              VIZ=/SWITCH1/SWITCH2..../SWITCHn
  1130.  
  1131.    Up to 128 characters are allowed after the equal sign. This string can be
  1132.    incorporated to the environment block via the 'SET' command of DOS or via
  1133.    switch /E of this program (see below).  Program releases prior to version
  1134.    3.63 lack this feature.
  1135.  
  1136.    While the SET command modifies the current DOS environment block, whether
  1137.    it is the global or a local one, switch /E only modifies the global block
  1138.    (even when the program is executed via a secondary COMMAND.COM, as in the
  1139.    case of shelling out to DOS from an application).   Notice that the local
  1140.    environment block is only a copy of the global block and lacks sufficient
  1141.    room to increase significantly the length of a variable, and that changes
  1142.    made to a local environment are not inherited by the global one.
  1143.  
  1144.    When searching for the environment variable, the program uses the current
  1145.    DOS environment block, whether it is the global or a local one.
  1146.  
  1147.    A recommended use of the environment string is to specify a default /Cn:n
  1148.    setting (e.g. /C03:00:20:30:40:50:01:77:70:11:22:33:44:55:66:76) that can
  1149.    be restored simply by executing VIz without any arguments after the color
  1150.    palette has been changed.
  1151.  
  1152.  
  1153.    6.4  ERRORLEVELS
  1154.  
  1155.    Upon exit its to DOS, the program passes execution status values that can
  1156.    be tested via ERRORLEVEL commands in a batch file.  The following are the
  1157.    values for version 4.20 or higher:
  1158.  
  1159.           Value   Condition
  1160.           -----   --------------------------------------
  1161.         255   Failure of cyclical redundancy check
  1162.         255   CPU type cannot execute version code
  1163.         255   Invalid DOS version
  1164.  
  1165.         254   Invalid ANSI (switch /A) request
  1166.         253   Unknown/incompatible video adapter
  1167.         252   Not enough additional RAM (/C? /? /F14 /F35)
  1168.         251   Hooked interrupts revectored
  1169.         250   Invalid cursor (switch /Vn) request
  1170.  
  1171.         128   XMM not installed or UMB load/unload error
  1172.          96   DOS environment error
  1173.          64   Incomplete color palette data list
  1174.          32   Invalid color palette datum
  1175.          16   Invalid video font for adapter and/or page
  1176.           8   Invalid video mode request
  1177.           4   Invalid video page for adapter and/or font
  1178.           2   Invalid video adapter for the request
  1179.           1   Unknown or invalid switch request
  1180.           0   Successful execution
  1181.  
  1182.    NOTE:
  1183.    Since some error conditions in the range from 1 to 128 are non-fatal, and
  1184.    the error values are added, the final errorlevel value may represent more
  1185.    than a single error condition.
  1186.  
  1187.    Program releases prior to version 3.10 lack this feature.
  1188.  
  1189.                 ----------------
  1190.  
  1191.  
  1192.    7.  LICENSING INFORMATION
  1193.  
  1194.    This documentation, programs, and other files distributed in this software
  1195.    package (the "Software") are the copyrighted property of  FM de Monasterio
  1196.    (the "Author"), who provides the Software and licenses its use. All rights
  1197.    are reserved.
  1198.  
  1199.    The file VIZ.REG contains a form needed to register this Software.
  1200.  
  1201.    Single User License.  Upon registration, you are granted a nontransferable
  1202.    license to use this Software in a single computer at a time.  The Software
  1203.    may also be transferred to another computer, provided that the Software is
  1204.    used only in one (1) computer at any time; under the license, the Software
  1205.    may be installed on a network server.
  1206.  
  1207.    Site/15-PCs License.  Upon registration, you are granted a nontransferable
  1208.    license to use this Software in a single site, or a set of sites, provided
  1209.    this Software is not used in more than fifteen (15) computers at any time,
  1210.    and that such computers are located exclusively within the site.  Licenses
  1211.    for more machines are available at discounted prices.
  1212.  
  1213.    Refunds Policy.  If a problem notified within ninety (90) days of shipping
  1214.    of the registered copy cannot be solved, the registration fee (but not the
  1215.    shipping costs) will be refunded upon receiving a written request with the
  1216.    original diskette(s) enclosed.
  1217.  
  1218.    Upgrade Policy.  Program upgrades are limited to licensed users.  Upgrades
  1219.    within the same major version (e.g. release 2.00 through 2.99) are free of
  1220.    charge if a self-addressed, stamped diskette mailer with a formatted, 360-
  1221.    kb diskette is included with the request.  Other upgrades are charged half
  1222.    the (single-user/site) registration fee.
  1223.  
  1224.    Technical Support.  A phone number for technical support is made available
  1225.    to site licenses for 100 machines or more; other licensed users must write
  1226.    to the Author who will contact them.
  1227.  
  1228.  
  1229.  
  1230.    U.S. GOVERNMENT INFORMATION
  1231.  
  1232.    The use, duplication, or disclosure by the U.S. Government of the Software
  1233.    is subject to the restricted rights applicable to commercial software that
  1234.    are specified in the subdivision (b.3.ii) of the 'Rights in Technical Data
  1235.    and Computer Software' clause, document DFARS 52.227-7013. The contractor/
  1236.    manufacturer is FM de Monasterio, P.O. Box 219, Cabin John, MD 20818-0219,
  1237.    USA.
  1238.  
  1239.                 ----------------
  1240.  
  1241.    DISTRIBUTION
  1242.  
  1243.    You may distribute this Software via magnetic and/or electronic means, but
  1244.    you are specifically prohibited from:
  1245.  
  1246.     - Charging fees or asking donations in exchange of or payment
  1247.       for copies of this Software.
  1248.  
  1249.     - Distributing this Software with commercial products without
  1250.       the written, express permission in advance from the author.
  1251.  
  1252.     - Distributing this Software via a for-profit organization or
  1253.       group, either alone or with other software.
  1254.  
  1255.     - Modifying any contents of this Software, including, but not
  1256.       limited to, the copyright notice and this license.
  1257.  
  1258.  
  1259.    The unauthorized copying, decompiling or disassembling of this Software is
  1260.    prohibited.  Any other use of this Software is also prohibited without the
  1261.    express, written permission in advance from the author.
  1262.  
  1263.    Latest program releases may be found at the Information Exchange BBS, 202-
  1264.    433-6639 (2400+ baud).
  1265.  
  1266.  
  1267.    TECHNICAL PROBLEMS
  1268.  
  1269.    If you encounter problems when using the Software (which can be replicated
  1270.    in the absence of other resident utilities), please write to the Author at
  1271.    the address above providing your name and address, program version number,
  1272.    machine model and configuration, and a description of the problem(s). When
  1273.    feasible, corrections for such problems may be incorporated in new program
  1274.    releases. Technical support is limited to registered users; correspondence
  1275.    from nonregistered users may not be answered.
  1276.  
  1277.                 ----------------
  1278.  
  1279.    WARRANTY DISCLAIMER
  1280.  
  1281.    The Author cannot and does not warrant that any functions contained in the
  1282.    Software will meet your requirements, or that its operations will be error
  1283.    free.  The entire risk as to the Software performance or quality, or both,
  1284.    is solely with the user and not the Author.  You assume responsibility for
  1285.    the selection of the program to achieve your intended results, and for the
  1286.    installation, use, and results obtained from the Software.
  1287.  
  1288.    The Author makes no warranty, either implied or expressed, including with-
  1289.    out limitation any warranty with respect to this Software documented here,
  1290.    its quality, performance, or fitness for a particular purpose. In no event
  1291.    shall the Author be liable to you for damages, whether direct or indirect,
  1292.    incidental, special, or consequential arising out the use of or any defect
  1293.    in the Software, even if the Author has been advised of the possibility of
  1294.    such damages, or for any claim by any other party.
  1295.  
  1296.    All other warranties of any kind, either express or implied, including but
  1297.    not limited to the implied warranties of merchantability and fitness for a
  1298.    particular purpose, are expressly excluded.
  1299.  
  1300.  
  1301.    LIMITATION OF REMEDIES
  1302.  
  1303.    The information contained in the documentation for the Software is subject
  1304.    to change without notice.
  1305.  
  1306.    The Author's entire liability, and your exclusive remedy shall be: (1) the
  1307.    replacement of an original Software diskette not meeting the above Limited
  1308.    Warranty and which is returned to the Author along with proof of purchase,
  1309.    or (2), if the Author is unable to deliver a replacement diskette which is
  1310.    free of defects, you may terminate the License Agreement by returning this
  1311.    Software and the corresponding license fee will be returned.
  1312.  
  1313.    By using the Software, you acknowledge (1) to have read and understood all
  1314.    parts of this document and (2) to have agreed with and accepted all of its
  1315.    provisions without any reservation.
  1316.  
  1317.                 ----------------
  1318.  
  1319.    Refer all inquiries to:
  1320.                 FM de Monasterio
  1321.                 P.O. Box 219
  1322.                 Cabin John, MD 20818-0219
  1323.                 USA
  1324.  
  1325.  ------------------------------------------------------------------------------
  1326.  [END]
  1327.